#include "common/pch.h"
#include "metadata/item.h"

#include <cftf/loger/syslog.h>
#include <cftc/reflect/class.h>
#include <cftc/reflect/field.h>

namespace mt
{

	CFT_IMPLEMENT_REFLECT_CLASS_BEGIN(Item::_ItemStat, cftc::reflect::Object);
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(ItemStatType, R"(wow_meta:"field_name:stat_type")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(ItemStatValue, R"(wow_meta:"field_name:stat_value")");
	CFT_IMPLEMENT_REFLECT_CLASS_END();

	CFT_IMPLEMENT_REFLECT_CLASS_BEGIN(Item::_Damage, cftc::reflect::Object);
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(DamageMin, R"(wow_meta:"field_name:dmg_min")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(DamageMax, R"(wow_meta:"field_name:dmg_max")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(DamageType, R"(wow_meta:"field_name:dmg_type")");
	CFT_IMPLEMENT_REFLECT_CLASS_END();

	CFT_IMPLEMENT_REFLECT_CLASS_BEGIN(Item::_Spell, cftc::reflect::Object);
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(SpellId, R"(wow_meta:"field_name:spellid_")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(SpellTrigger, R"(wow_meta:"field_name:spelltrigger_")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(SpellCharges, R"(wow_meta:"field_name:spellcharges_")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(SpellPPMRate, R"(wow_meta:"field_name:spellppmRate_")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(SpellCooldown, R"(wow_meta:"field_name:spellcooldown_")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(SpellCategory, R"(wow_meta:"field_name:spellcategory_")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(SpellCategoryCooldown, R"(wow_meta:"field_name:spellcategorycooldown_")");
	CFT_IMPLEMENT_REFLECT_CLASS_END();

	CFT_IMPLEMENT_REFLECT_CLASS_BEGIN(Item, cftc::reflect::Object);
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(entry, R"(wow_meta:"field_name:entry")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(class_, R"(wow_meta:"field_name:class")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(name, R"(wow_meta:"field_name:name")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(displayid, R"(wow_meta:"field_name:displayid")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(Quality, R"(wow_meta:"field_name:Quality")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(Flags, R"(wow_meta:"field_name:Flags")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(BuyCount, R"(wow_meta:"field_name:BuyCount")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(BuyPrice, R"(wow_meta:"field_name:BuyPrice")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(SellPrice, R"(wow_meta:"field_name:SellPrice")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(InventoryType, R"(wow_meta:"field_name:InventoryType")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(AllowableClass, R"(wow_meta:"field_name:AllowableClass")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(AllowableRace, R"(wow_meta:"field_name:AllowableRace")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(ItemLevel, R"(wow_meta:"field_name:ItemLevel")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(RequiredLevel, R"(wow_meta:"field_name:RequiredLevel")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(RequiredSkill, R"(wow_meta:"field_name:RequiredSkill")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(RequiredSkillRank, R"(wow_meta:"field_name:RequiredSkillRank")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(requiredspell, R"(wow_meta:"field_name:requiredspell")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(requiredhonorrank, R"(wow_meta:"field_name:requiredhonorrank")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(RequiredCityRank, R"(wow_meta:"field_name:RequiredCityRank")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(RequiredReputationFaction, R"(wow_meta:"field_name:RequiredReputationFaction")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(RequiredReputationRank, R"(wow_meta:"field_name:RequiredReputationRank")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(maxcount, R"(wow_meta:"field_name:maxcount")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(stackable, R"(wow_meta:"field_name:stackable")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(ContainerSlots, R"(wow_meta:"field_name:ContainerSlots")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(armor, R"(wow_meta:"field_name:armor")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(holy_res, R"(wow_meta:"field_name:holy_res")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(fire_res, R"(wow_meta:"field_name:fire_res")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(nature_res, R"(wow_meta:"field_name:nature_res")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(frost_res, R"(wow_meta:"field_name:frost_res")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(shadow_res, R"(wow_meta:"field_name:shadow_res")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(arcane_res, R"(wow_meta:"field_name:arcane_res")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(delay, R"(wow_meta:"field_name:delay")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(ammo_type, R"(wow_meta:"field_name:ammo_type")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(RangedModRange, R"(wow_meta:"field_name:RangedModRange")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(bonding, R"(wow_meta:"field_name:bonding")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(description, R"(wow_meta:"field_name:description")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(PageText, R"(wow_meta:"field_name:PageText")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(LanguageID, R"(wow_meta:"field_name:LanguageID")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(PageMaterial, R"(wow_meta:"field_name:PageMaterial")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(startquest, R"(wow_meta:"field_name:startquest")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(lockid, R"(wow_meta:"field_name:lockid")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(Material, R"(wow_meta:"field_name:Material")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(sheath, R"(wow_meta:"field_name:sheath")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(RandomProperty, R"(wow_meta:"field_name:RandomProperty")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(block, R"(wow_meta:"field_name:block")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(itemset, R"(wow_meta:"field_name:itemset")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(MaxDurability, R"(wow_meta:"field_name:MaxDurability")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(area, R"(wow_meta:"field_name:area")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(Map, R"(wow_meta:"field_name:Map")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(BagFamily, R"(wow_meta:"field_name:BagFamily")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(DisenchantID, R"(wow_meta:"field_name:DisenchantID")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(FoodType, R"(wow_meta:"field_name:FoodType")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(minMoneyLoot, R"(wow_meta:"field_name:minMoneyLoot")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(maxMoneyLoot, R"(wow_meta:"field_name:maxMoneyLoot")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(Duration, R"(wow_meta:"field_name:Duration")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(ExtraFlags, R"(wow_meta:"field_name:ExtraFlags")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(ItemStat, R"(wow_meta:"element_size:MAX_ITEM_PROTO_STATS")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(Damage, R"(wow_meta:"element_size:MAX_ITEM_PROTO_DAMAGES")");
		CFT_IMPLEMENT_REFLECT_FIELD_ANNOTATION(Spells, R"(wow_meta:"element_size:MAX_ITEM_PROTO_SPELLS")");
	CFT_IMPLEMENT_REFLECT_CLASS_END();

	void Item::MetaInstanceInit1()
	{
		int i = 0;
	}

}